
/*三者的区别：
1.基本区别
String的对象不可变，StringBuffer和StringBuilder的对象是可变的

2.性能区别
三者中StringBuilder执行速度最佳，StringBuffer次之，String的执行速度最慢
（String为字符串常量，而StringBuilder和StringBuffer均为字符串变量，String对象一旦创建后该对象是不可更改的，后两者的对象是变量是可以更改的）

3.安全区别
String、StringBuffer是线程安全的，StringBuilder是线程不安全的（所以如果程序是单线程的使用StringBuilder效率高，如果是多线程使用StringBuffer或者String）

三者的相同：
1.三者在java中都是用来处理字符串的
2.三个类都被final修饰，因此都是不可继承的
3.StringBuilder与StringBuffer有公共父类AbstractStringBuilder(抽象类)
*
*三种方式拼接1-20000数字，判断三者的耗时
*
* */

public class Test1 {
    public static void main (String[] args){
        //初始设置
        long startTime=0L;
        long endTime=0L;
        String text="";
        StringBuffer buffer = new StringBuffer();
        StringBuilder builder=new StringBuilder();
        //开始对比
        startTime=System.currentTimeMillis();

        for(int i=0;i<200000;i++){
            text+=i;
        }
         endTime=System.currentTimeMillis();
        System.out.println("String的执行时间"+(endTime-startTime));
        startTime=System.currentTimeMillis();
        for (int i=0;i<200000;i++){
            buffer.append(String.valueOf(i));
        }
        endTime=System.currentTimeMillis();
        System.out.println("Stringbuffer的执行时间"+(endTime-startTime));
        startTime=System.currentTimeMillis();
        for (int i=0;i<200000;i++){
            builder.append(String.valueOf(i));
        }
        endTime=System.currentTimeMillis();
        System.out.println("Stringbuilder的执行时间"+(endTime-startTime));
    }

}
